class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        //原地移除所有值为val的元素
        //那么就想办法在遍历的过程中把元素移除掉 或者说
        //把值不为val的元素都放到前面来
        //那么也就是记录一个指针 指针原本指向最末尾 然后每次往回--
        //统计删除了多少个元素
        if(nums.size() == 0) return 0;
        int p = nums.size() - 1;
        int i = 0;
        while (i <= p) {
            if (nums[i] == val && nums[p] != val) swap(nums[i++], nums[p--]);
            if (nums[p] == val)p--;
            if (nums[i] != val)i++;
        }
        return p+1;
    }
};
